//////////////////////////////////////////////////////////////////////////
//             Copyright 2014  All Rights Reserved                //
//////////////////////////////////////////////////////////////////////////
/* =======================================================================
 * 系统名   : 
 * 子系统名 : 
 * Class名  : ScheduledThreadPool.java
 * 概要     : 
 * 改版履历 : 
 * 版本                     日期                    作者名             备注
 * 1.0.0    2015年1月13日        郭恩洲          初次作成
 * ======================================================================= */
package thread;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledThreadPool  {
	
	
		public static void main(String[] args) throws Exception {
			ScheduledExecutorService  es = Executors.newScheduledThreadPool(10);
			
			/*ScheduledFuture<String> res = es.schedule(new Callable<String>() {
				@Override
				public String call() throws Exception {
					TimeUnit.SECONDS.sleep(5);
					String name = Thread.currentThread().getName();
					return name;
				}
			}, 5, TimeUnit.SECONDS);
			
			
			while(!res.isDone()){
				try {
					TimeUnit.MILLISECONDS.sleep(200);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println("#");
			}
			System.out.println("\n 计算完成，结果是:"+ res.get() +"元");
			es.shutdown();*/
			
			for (int i = 0; i < 4; i++) {
				System.out.println("加入任务"+i);
				es.schedule(new WTask("洗菜-"+i) , 5, TimeUnit.SECONDS);
			}
			TimeUnit.SECONDS.sleep(10);
			
			for (int i = 0; i < 4; i++) {
				System.out.println("加入任务"+i);
				es.scheduleAtFixedRate(new WTask("炒菜-"+i) , 1,5, TimeUnit.SECONDS);
				//es.scheduleWithFixedDelay(command, initialDelay, delay, unit)
			}
			
			
		}
}


class WTask implements Runnable{
	private String paramA;

	public WTask(String paramA) {
		super();
		this.paramA = paramA;
	}


	@Override
	public void run() {
		System.out.println(paramA);
		System.out.println(Thread.currentThread().getName());
		try {
			TimeUnit.SECONDS.sleep(5);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
}
